/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pkgRoulette;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JTextField;
import Main.Frame;
import java.awt.Graphics;

/**
 *
 * @author Usager
 */
//gere les evenements de
public class GererEvenementRoulette extends KeyAdapter implements ActionListener, FocusListener {

    boolean clean = true;
    Roulette roulette;
    private Frame frame;

    /**
     * Constructeur de la classe GererEvenementRoulette
     * @param roulette: Pour avoir acces au contenu de la classe roulette
     * @param frame: Pour avoir acces au panneau roulette
     */
    public GererEvenementRoulette(Roulette roulette, Frame frame) {
        this.roulette = roulette;
        this.frame = frame;
        roulette.repaint();
    }

    /**
     * Methode pour gerer les evenements sur les objets
     * @param fe: Lorsque l'utilisateur enlève le focus de l'objet
     */
    @Override
    public void focusLost(FocusEvent fe) {
        JTextField actuel = (JTextField) fe.getSource();
        if (actuel.getText().toString().equals("")) {
            actuel.setText("0");
        } else if (actuel.getText().length() == 1) {
        } else {
            do {
                if (actuel.getText().substring(0, 1).equals("0")) {
                    actuel.setText(actuel.getText().substring(1, (actuel.getText().length())));
                }
            } while (actuel.getText().substring(0, 1).equals("0"));
        }
        roulette.totalMise();
        roulette.lblMise.setText("Mise :" + roulette.miseTotal + "$");
        if (((roulette.miseTotal <= frame.argent) && (roulette.miseTotal > 0))) {
            roulette.btnJouer.setEnabled(true);
        } else {
            roulette.btnJouer.setEnabled(false);
        }
    }

    /**
     * Methode pour gerer les evenements sur les objets
     * @param fe: Lorsque l'utilisateur met le focus sur un objet
     */
    @Override
    public void focusGained(FocusEvent fe) {
    }

    /**
     * Methode pour gerer les evenements au clavier
     * @param e: Prend en note le caractère taper par l'utilisateur
     */
    @Override
    public void keyTyped(KeyEvent e) {
        JTextField actuel = (JTextField) e.getSource();
        if (e.getKeyChar() == '\n') {
            actuel.setFocusable(false);//Enleve le focus pour faire lost focus
            actuel.setFocusable(true);//remet le focus
        }
        if (e.getKeyChar() == 'f' || e.getKeyChar() == 'd') {
            e.consume();
        }
        try {
            Double.parseDouble(actuel.getText() + e.getKeyChar());
        } catch (Exception exc) {
            e.consume();
        }
    }

    /**
     * Methode pour gerer les evenements sur les JComponents
     * @param ae: Prendre en note l'action de l'utilisateur
     */
    public void actionPerformed(ActionEvent ae) {
        if (ae.getSource() == roulette.btnQuitter) {
            frame.mainPanel.removeAll();
            frame.mainPanel.add(frame.bienvenue);
            frame.setSize(615, 400);
            frame.validate();
            frame.getRootPane();
            frame.repaint();
        }
        if (ae.getSource() == roulette.btnRejouer) {
            roulette.rejouer();
        }
        if (ae.getSource() == roulette.btnJouer) {
            roulette.regle();
        }
        if (ae.getSource() == roulette.btnInitialisation) {
            roulette.vider();
        }
    }
}
